package com.genghis.ptas.classify.service.impl;

import com.genghis.core.page.entity.Page;
import com.genghis.core.page.entity.PageParameter;
import com.genghis.ptas.classify.dao.ClassifyDao;
import com.genghis.ptas.classify.entity.Type;
import com.genghis.ptas.classify.entity.TypeValues;
import com.genghis.ptas.classify.service.ClassifyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: gaoyang
 * To change this template use File | Settings | File Templates.
 */
@Service("classifyService")
public class ClassifyServiceImpl implements ClassifyService {
    @Autowired
    private ClassifyDao classifyDao;

    @Override
    public List<Type> findAllType() {
        List<Type> allType = classifyDao.findTypeList();
        for (Type type : allType) {
            List<TypeValues> typeValuesList = classifyDao.findTypeValuesByTypeName(type.getTypeName());
            type.setTypeValuesList(typeValuesList);
        }
        return allType;
    }

    @Override
    public Page<Type> findTypePageList(PageParameter pageParameter, Type type) {
        return classifyDao.findTypePageList(pageParameter, type);
    }

    @Override
    public List<Type> findAllTypeList() {
        return classifyDao.findTypeList();
    }

    @Override
    public boolean checkRepeatTypeName(Type type) {
        Boolean notHasRepeatName = classifyDao.checkRepeatTypeName(type.getTypeName());
        Boolean notEquOldName = type.getTypeName().equals(type.getOldTypeName());
        return notHasRepeatName || notEquOldName;
    }

    @Override
    public void addType(Type type) {
        classifyDao.addType(type);
    }

    @Override
    public Type findTypeByTypeName(String typeName) {
        return classifyDao.findTypeByTypeName(typeName);
    }

    @Override
    public TypeValues findTypeValuesById(Integer id) {
        return classifyDao.findTypeValuesById(id);
    }

    @Override
    public void editType(Type type) {
        List<TypeValues> typeValues = classifyDao.findTypeValuesByTypeName(type.getOldTypeName());
        for (TypeValues typeValue : typeValues) {
            typeValue.setTypeName(type.getTypeName());
            classifyDao.editTypeValue(typeValue);
        }
        classifyDao.editType(type);
    }

    @Override
    public void delType(String typeNames) {
        String[] typeNameList = typeNames.split(",");
        for (String typeName : typeNameList) {
            classifyDao.delTypeValues(typeName);
            classifyDao.delType(typeName);
        }
    }

    @Override
    public Page<TypeValues> findTypeValuePageList(PageParameter pageParameter, TypeValues typeValue) {
        return classifyDao.findTypeValuePageList(pageParameter, typeValue);
    }

    @Override
    public List<TypeValues> findAllTypeValueList() {
        return classifyDao.findAllTypeValueList();
    }

    @Override
    public void addTypeValue(TypeValues typeValue) {
        classifyDao.addTypeValue(typeValue);
    }

    @Override
    public boolean checkRepeatTypeValue(TypeValues typeValue) {
        return classifyDao.checkRepeatTypeValue(typeValue);
    }

    @Override
    public void editTypeValues(TypeValues typeValues) {
        classifyDao.editTypeValue(typeValues);
    }

    @Override
    public void delTypeValue(TypeValues typeValues) {
        classifyDao.delTypeValue(typeValues);
    }

    @Override
    public Integer changeTypeValueToCode(String typeName) {
        TypeValues typeValues = new TypeValues();
        typeValues.setTypeValue(typeName);
        return classifyDao.findTypeValuesByTypeValue(typeValues).getId();

    }

    @Override
    public List<TypeValues> findAllTypeValue() {
        return classifyDao.findAllTypeValueList();
    }

}
